package com.lanhe.teacher.mapper;

import com.lanhe.teacher.domain.LhTeacher;
import com.lanhe.teacher.domain.vo.StatTeacherByGroupVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 老师表(LhTeacher)表数据库访问层
 *
 * @author zhanggl
 * @since 2023-09-14 22:28:47
 */
public interface LhTeacherMapper {

	/**
	 * 根据条件分页查询老师列表
	 *
	 * @param teacher 用户信息
	 * @return 老师信息集合信息
	 */
	List<LhTeacher> selectTeacherList(LhTeacher teacher);

	/**
	 * 查询老师信息
	 *
	 * @param teacherId 老师ID
	 * @return 老师信息
	 */
	LhTeacher selectTeacherById(Long teacherId);

	/**
	 * 查询老师名称是否存在
	 *
	 * @param teacherName 老师名称
	 * @param teacherId 老师ID
	 * @param groupId 组ID
	 * @return 结果
	 */
	LhTeacher checkTeacherNameUnique(@Param("teacherName") String teacherName,
	                                 @Param("groupId") Long groupId,
	                                 @Param("teacherId") Long teacherId);

	/**
	 * 新增老师信息
	 *
	 * @param teacher 老师信息
	 * @return 结果
	 */
	int insertTeacher(LhTeacher teacher);

	/**
	 * 修改老师信息
	 *
	 * @param teacher 参数老师信息
	 * @return 结果
	 */
	int updateTeacher(LhTeacher teacher);

	/**
	 * 批量删除老师信息
	 *
	 * @param teacherIds 需要删除的参数ID
	 * @return 结果
	 */
	int deleteTeacherByIds(Long[] teacherIds);

	/**
	 * 查询组信息批量
	 *
	 * @param teacherIds 组IDs
	 * @return 组信息
	 */
	List<LhTeacher> selectTeacherByIds(Long[] teacherIds);

	/**
	 * 根据小组ID统计老师数量
	 *
	 * @param groupIds 小组ID
	 * @return 结果
	 */
	List<StatTeacherByGroupVo> statTeacherByGroupIds(@Param("groupIds") List<Long> groupIds);
}

